The following code is in Python but it shows you how to use Waypoints with Husky, currently is an infinite loop, but you can modify accordingly:
Launch the following in separate terminals:
$ roslaunch husky_gazebo husky_empty_world
$ roslaunch husky_viz view_robot.launch
$ roslaunch husky_navigation move_base_mapless_demo.launch
Run the following python program: navigation_husky.py
#! /usr/bin/env python3
import rospy
import actionlib
from move_base_msgs.msg import MoveBaseAction, MoveBaseResult, MoveBaseGoal
class MoveHusky(object):
def __init__(self):
self.client = actionlib.SimpleActionClient('/move_base', MoveBaseAction)
self.client.wait_for_server()
self.goal = MoveBaseGoal()
def moveToDest(self, x, y):
self.goal.target_pose.header.frame_id = "odom"
self.goal.target_pose.pose.position.x = x
self.goal.target_pose.pose.position.y = y
self.goal.target_pose.pose.orientation.z = 0.7071
self.goal.target_pose.pose.orientation.w = 0.7071
rate = rospy.Rate(10)
self.client.send_goal(self.goal)
result = self.client.get_result()
while result == None:
result = self.client.get_result()
status = self.client.get_state()
rospy.loginfo("Status: {}".format(status))
rospy.loginfo("Result: {}".format(result))
rate.sleep()
if __name__ == "__main__":
rospy.init_node("move_base_client")
moveHusky = MoveHusky()
while not rospy.is_shutdown():
moveHusky.moveToDest(-4.0, 0.0)
moveHusky.moveToDest(-4.0, -2.0)
moveHusky.moveToDest(0.0, 0.0)
Originally posted by osilva with karma: 1650 on 2021-11-15
This answer was ACCEPTED on the original site
Post score: 1
Original comments
Comment by osilva on 2021-11-15:
One of the particular thing with Husky, is that the header frame is odom
, in the example the Navigation tutorial base_link
is used instead.
Comment by adamt11 on 2021-11-16:
Thanks, that python code ran successfully. Why does move_base_mapless_demo need to be launched? I'm not sure exactly what this does.
Comment by osilva on 2021-11-16:
It starts the navigation node by calling move_base.launch
:
<launch>
<!--- Run Move Base -->
<include file="$(find husky_navigation)/launch/move_base.launch">
<arg name="no_static_map" value="true"/>
</include>
</launch>
And to see what is move_base.launch refer to: https://github.com/husky/husky/blob/noetic-devel/husky_navigation/launch/move_base.launch