|
发表于 2020-7-7 11:16:22
10722 浏览 4 回复
[入门教程]
Rospy使用例程(机器学习入门套餐)
写在前面的话:机器学习最近正直火热阶段,基于python的pytorch库在教学和科研中可以很好的胜任深度学习和强化学习的框架部署工作(其实这部分工作,ETH大佬们已经快把路给堵死了,感兴趣的可以去YouTube上搜索相关视频和论文),鄙人不才,啃了好久,才刚刚入门。
而ROS系统则提供了一个较好的快速验证平台(gazebo)以及松耦合的结构部署,方便程序的集成。
结合起来,有必要了解一下rospy和ROS的基本通信模式,为后续的机器学习入门奠定基础。官方的rospy给的历程并不详细,下面的博客内容给出一个参考的模板,各位看官轻拍,大神可以无视!
由于接触到pytorch,所以用python完成与ROS的通信,下面例子为从程序中摘出来的一部分,用到了ROS消息的订阅与发布,服务的通信,可以作为参考使用:- import rospy
- from mavros_msgs.msg import AttitudeTarget
- from geometry_msgs.msg import PoseStamped
- from mavros_msgs.srv import CommandBool
- from mavros_msgs.srv import SetMode
- setpoint_pos = PoseStamped()
- setpoint_pos.pose.position.x = 0
- setpoint_pos.pose.position.y = 0
- setpoint_pos.pose.position.z = 2
- local_position = PoseStamped()
- locat_attitude_target = AttitudeTarget()
- locat_attitude_target.thrust = 0.7
- locat_attitude_target.type_mask = 0b10000111
- arm_state = CommandBool()
- def ros_test():
- rospy.init_node('rospy_node',anonymous=True)
- thrust_pub = rospy.Publisher('/mavros/setpoint_raw/attitude',AttitudeTarget,queue_size=1)
- state_arm_srv = rospy.ServiceProxy('/mavros/cmd/arming',CommandBool)
- state_mode_srv = rospy.ServiceProxy('/mavros/set_mode',SetMode)
- rospy.Subscriber('/mavros/state',State,VehicleState_callback)
- setpoint_pos_pub = rospy.Publisher('/mavros/setpoint_position/local',PoseStamped,queue_size=1)
- rospy.Subscriber('/mavros/local_position/pose',PoseStamped,local_pos_cb)
- rate = rospy.Rate(100)
-
- while not rospy.is_shutdown():
- # print(vehicle_state)
- # rospy.loginfo(vehicle_state.mode.)
- if vehicle_state.mode != 'OFFBOARD':
- state_mode_srv.call(custom_mode='OFFBOARD')
- else:
- # print(vehicle_state.armed)
- if vehicle_state.armed == False:
- state_arm_srv.call(True)
- else:
- # thrust_pub.publish(locat_attitude_target)
- # data = rospy.wait_for_message("/mavros/local_position/pose",PoseStamped,timeout=None)
- print(local_position.pose.position.z)
- setpoint_pos_pub.publish(setpoint_pos)
- rate.sleep()
复制代码
使用方法:启用gazebo,与mavros,然后运行脚本(本脚本需要修改后使用),可以完成无人机的定点悬停,以及定油门飞行功能
|
 扫一扫浏览分享
|
|
|
|
|
|
|
发表于 2020-7-7 18:19:47
|
|
|
|
|
|
|
楼主|
发表于 2020-7-9 09:24:11
机器学习是个大坑.....我的水平只能够引一下路,里面高手如云~ |
|
|
|
|
|
|
|
楼主|
发表于 2020-7-11 17:02:17
还是习惯于C++,Python还是要慢慢摸索来... |
|
|
|
|
|
|
|