1、发布速度话题控制乌龟和小车
roscore
rosrun turtlesim turtlesim_node
rostopic list
rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/Twist "linear:
2、创建工作空间
mkdir -p ~/tutorial_ws/src
cd tutorial_ws/src/
catkin_create_pkg ros_code std_msgs rospy roscpp
cd ..
catkin_make
source devel/setup.bash
3、(base) xu@xu-RedmiBook-16:~/tutorial_ws/src/ros_code下创建文件夹:scripts用来放python文件
mkdir scripts
4、打开新的终端添加:
gedit .bashrc
添加:source ~/tutorial_ws/devel/setup.bash
source .bashrc
以上完成了环境搭建。
1、在scripts文件夹下创建创建文件:
touch pub_vel.py
chmod +x pub_vel.py #设置为可执行文件
# 打开pub_vel.py添加代码
#!/usr/bin/env python
# license removed for brevity
import rospy
from std_msgs.msg import String
def talker():
pub = rospy.Publisher('chatter', String, queue_size=10)
rospy.init_node('talker', anonymous=True)
rate = rospy.Rate(10) # 10hz
while not rospy.is_shutdown():
hello_str = "hello world %s" % rospy.get_time()
rospy.loginfo(hello_str)
pub.publish(hello_str)
rate.sleep()
if __name__ == '__main__':
try:
talker()
except rospy.ROSInterruptException:
pass
2、打开新的终端
r0score
3、在scripts文件夹下运行终端
python3 pub_vel.py 或
python pub_vel.py
4、对文件夹内容的修改
roscore
rosrun turtlesim turtlesim_node
查看话题并修改
rostopic list
话题的消息类型修改
rostopic type /turtle1/cmd_vel
修改发布内容
#!/usr/bin/env python
# license removed for brevity
import rospy
from geometry_msgs.msg import Twist
def talker():
pub = rospy.Publisher('/turtle1/cmd_vel', Twist, queue_size=10)
rospy.init_node('talker', anonymous=True)
rate = rospy.Rate(10) # 10hz
while not rospy.is_shutdown():
vel_cmd = Twist()
vel_cmd.linear.x = o.5
vel_cmd.angular.z = 1.0
pub.publish(vel_cmd)
rate.sleep()
if __name__ == '__main__':
try:
talker()
except rospy.ROSInterruptException:
pass
实现简单仿真
1、从控制乌龟到控制小车——只需修改话题(把机器人抽象为话题)
2、常用命令行工具:
rostopic list 话题列表
rostopic pub -r 10 /turtle1/cmd_vel tab 发布内容
rostopic echo /turtle1/cmd_vel 打印话题内容
rostopic type /turtle1/cmd_vel 打印消息类型
rosmsg show /turtle1/Pose 打印消息类型的具体格式
3、控制小车
#!/usr/bin/env python
# license removed for brevity
import rospy
from geometry_msgs.msg import Twist
def talker():
pub = rospy.Publisher('/tianbot_mini/cmd_vel', Twist, queue_size=10)
rospy.init_node('talker', anonymous=True)
rate = rospy.Rate(10) # 10hz
while not rospy.is_shutdown():
vel_cmd = Twist()
vel_cmd.linear.x = 0.5
vel_cmd.linear.y = 1.0
vel_cmd.angular.z = 1.0
pub.publish(vel_cmd)
rate.sleep()
if __name__ == '__main__':
try:
talker()
except rospy.ROSInterruptException:
pass
####连接小车,更改小车的名字tianbot_mini,且添加y轴