This is an extension of the current tutorial using the ROS as our middleware (instead of raw sockets).
The builder script is the same as the one used in the sockets tutorial. Except the part on the inteface, which in this case is ROS. You can find it in examples/tutorials/tutorial-1-ros.py.
pose.add_stream('ros')
motion.add_stream('ros')
Run morse with:
morse run examples/tutorials/tutorial-1-ros.py
In another terminal, use the rostopic, rxplot and rxgraph commands to control the robot.
First, send a motion command to the robot’s MotionVW actuator:
rostopic pub -1 /atrv/motion geometry_msgs/Twist "{linear: {x: .5}, angular: {z: .5}}"
Second, look at its pose:
rostopic echo -n10 /atrv/pose
Once you sent a motion command, you can plot the pose in realtime with:
rxplot /atrv/pose/pose/position/x,/atrv/pose/pose/position/y /atrv/pose/pose/orientation/z
It’s an alternative to rostopic list showing a connexion of nodes and topics.
From a terminal, start an interactive Python session typing python and paste the following code:
import rospy
from geometry_msgs.msg import PoseStamped
from geometry_msgs.msg import Twist
cmd = rospy.Publisher("/atrv/motion", Twist)
motion = Twist()
def callback(msg):
position = msg.pose.position
if position.x < 1:
motion.linear.x = +0.5
if position.x > 2:
motion.linear.x = -0.5
cmd.publish(motion)
rospy.init_node("rostuto1")
rospy.Subscriber("/atrv/pose", PoseStamped, callback)
rospy.spin() # this will block untill you hit Ctrl+C
You should see the robot move forward then backward after 1m.