ATLANTA -- Even during the worst days of his slump, Troy Glaus never lost faith in his skills.
"I've felt better than the results have been," he said. "However, this is a result-oriented profession. At some point, the balls have to fall."
The Braves have won two straight after ending a nine-game skid that was their worst in nearly four years. Houston lost its fifth straight.
Glaus had three hits to raise his average 27 points to .221 in his most productive game since Aug. 9, 2008, when he had five RBIs for St. Louis in a 12-3 win at the Chicago Cubs.
"I'm not going to sit here and say that I should be hitting .360," said Glaus, who's in his first season with Atlanta. "But I've felt like I've been swinging the bat better than .180 or whatever it was."
Hudson (2-1) allowed five hits and one run with two walks and one strikeout in 6 2/3 innings. The right-hander faced the minimum over his last 12 batters before Peter Moylan, the first of three Atlanta relievers, replaced him with two out in the seventh.
Cramping in his right forearm and both calves eventually caused Hudson to signal from the mound that manager Bobby Cox should take him out.
"To be honest, I didn't really feel great the whole game," Hudson said. "But I was able to throw some sinkers and throw enough strikes to get some ground balls and we ended up putting some runs on the board."
Heyward's seventh homer, a solo shot off reliever Sammy Gervacio, gave the Braves a 7-1 lead in the seventh. The Atlanta right-fielder leads all rookies in home runs and RBIs (20).
Wandy Rodriguez (1-3) gave up 10 hits, five runs -- two earned -- one walk and struck out five. Houston relievers Chris Sampson, Gervacio, Brian Moehler followed the left-hander, whose start was pushed back one day because of back spasms.
"I felt fine," Rodriguez said. "I made a couple of mistakes in the fifth inning, but I didn't miss by much."
Glaus put the Braves up 2-1 in the third with a two-run double, and all three of Atlanta's runs in the fifth were unearned after leadoff batter Omar Infante reached on a fielding error by third baseman Pedro Feliz.
In the sixth, Glaus drove in his fourth run with an RBI single.
"I'm trying to just simplify things," Glaus said. "Just put the bat on the ball and not worry to much about the result, but just have a good at-bat, put a good swing on it."
Heyward led off the seventh with his homer to left-center off Gervacio, who left with a right shoulder strain after failing to retire any of the three batters he faced. Moehler gave up Infante's RBI single Martin Prado's two-run double.
Lance Berkman gave Houston a 1-0 with an RBI groundout in the first.
The Astros had won Rodriguez's last two starts, a span of 14 1/3 innings during which he went 1-0 with a 1.88 ERA and 10 strikeouts.
Houston manager Brad Mills hoped the Astros might snap out of its offensive malaise after it held a pre-game team meeting. Before Saturday, Houston ranked at the bottom of the National League in homers and RBIs and was 14th in batting average.
Instead, the Astros went 1 for 8 with runners in scoring position.
"Sometimes you go through things like this when some guys have to understand what they're capable of," Mills said. "I wanted to remind them of that."
Hudson improved to 3-0 with a 1.19 ERA in five career starts against Houston. Overall, the 34-year-old Hudson is 150-79 in 12 seasons and 107-2 when given a lead of at least three runs.
"To be honest, I forgot it was going to be 150 until Chipper [Jones] told me congratulations after the game," Hudson said. "It just means I've been around. That's about it. It's great to get that up on the board and hopefully there will be a lot more."
Infante and Prado, the Nos. 1-2 hitters in the Atlanta lineup, went 6 for 10 with five runs scored. ... Berkman went 0 for 2 in his return to the lineup after missing a game with a strained left groin. ... Braves SS Yunel Escobar (strained thigh) missed his second straight game. ... Atlanta C Brian McCann got the day off.