一、启动安装与启动roscore
可以去鱼香ROS一键安装ROS,网址为http://fishros.com
进去后点击一键安装
就能看到一键安装指令
-
wget http://fishros.com/install -O fishros && . fishros
安装完毕后即可启动roscore
二、工作空间的创建
使用catkin_create_pkg 创建功能包,__name__为仍以附属名,后面为依赖,如果使用python编程,可不加roscpp。
三、进入__name__底下的src进行python文件的编写。
海龟跟踪的代码如下:
-
#!/usr/bin/env python3 from lib2to3.pgen2.token import RPAR from operator import inv import re import sys import rospy import numpy as np import math from turtlesim.srv import Spawn from geometry_msgs.msg import Twist from turtlesim.msg import Pose global pose1 global topicPub def pose1Callback(msg): global pose1 pose1.x=msg.x pose1.y=msg.y rospy.loginfo("Turtle1111 pose: x:%0.6f, y:%0.6f", msg.x, msg.y) def pose2Callback(msg): global pose1 pose2 = Pose() pose2.x=msg.x pose2.y=msg.y rospy.loginfo("Turtle2222pose: x:%0.6f, y:%0.6f", msg.x, msg.y) pose2.theta = msg.theta c = math.cos(msg.theta) s = math.sin(msg.theta) inv_Org = Pose() inv_Org.x = -1*( c * pose2.x + s * pose2.y ) inv_Org.y = -1*( -1*s * pose2.x + c * pose2.y ) Rotated_P = Pose() Rotated_P.x= c * pose1.x + s * pose1.y Rotated_P.y= -1* s * pose1.x + c * pose1.y relatedPose = Pose() relatedPose.x = Rotated_P.x + inv_Org.x relatedPose.y = Rotated_P.y + inv_Org.y vel_msg = Twist() vel_msg.linear.x = math.sqrt(relatedPose.x * relatedPose.x + relatedPose.y * relatedPose.y ) vel_msg.angular.z = math.atan2(relatedPose.y , relatedPose.x) turtle_vel_pub.publish(vel_msg) if __name__ == "__main__": pose1 = Pose() rospy.init_node("turtle_following") try: add_turtle = rospy.ServiceProxy('/spawn' , Spawn) response = add_turtle(1 , 1 , 0, "turtle2") except rospy.ServiceException as e: print("Service call failed:%s",e) turtle_vel_pub = rospy.Publisher('/turtle2/cmd_vel',Twist,queue_size=10) rospy.Subscriber("/turtle1/pose",Pose,pose1Callback) rospy.Subscriber("/turtle2/pose",Pose,pose2Callback) rospy.spin()
在编辑过程中,遇到了一个问题
导入numpy包的时候出现黄下划线,一运行就开始报错
第一个报错出现在第五行
就是这个numpy,但是通过pip3 install numpy后
运行还是报错,经过老师指导,将import numpy删除后,报错还是未改变。
最终就是后面的rospkg模块未安装,通过 pip3 install rospkg后,程序就能正常运行了。
很奇怪的是在未安装rospkg的情况下,在python源代码里面import rospkg居然有高亮,可能是版本问题,这个不是很清楚。
四、实现海龟跟踪
先生产一个海龟
rosrun turtlesim turtlesim_node
再使用
rosrun turtlesim turtle_teleop_key
预控制海龟,再rosrun __name__ __name__.py将刚才的py脚本文件运行起来,得注意,python脚本文件需要先赋予其执行权限。
可以现在目标文件下使用
ls -l
可查看文件执行权限
r 读
w 写
x 执行
我们需要赋予其执行权限,需要使用
chmod +x __name__
然后再运行海龟文件