我为轮式机器人创建了一个 xacro 文件。它的一个片段是这样的:
<robot name="em_3905" xmlns:xacro="http://www.ros.org/wiki/xacro">
<!-- Degree-to-radian conversions -->
<xacro:property name="degrees_45" value="0.785398163"/>
<xacro:property name="degrees_90" value="1.57079633"/>
<!-- chassis_length is measured along the x axis, chassis_width
along the y axis, and chassis_height along the z axis. -->
<xacro:property name="chassis_length" value="4"/>
<xacro:property name="chassis_width" value="1"/>
<xacro:property name="chassis_height" value="0.01"/>
<xacro:property name="chassis_mass" value="2.788"/>
<xacro:property name="wheel_radius" value="0.2"/>
我有一个 python 脚本,它依赖于chassis_length and chassis_width and wheel_radius
这个 xacro 文件中的参数。
和我的 python_script:
#!/usr/bin/env python
import rospy
import numpy as np
from numpy import pi
from std_msgs.msg import Float64
from geometry_msgs.msg import Twist
class steering:
def __init__(self):
rospy.init_node("steering_controller", anonymous=True)
rospy.Subscriber("/cmd_vel", Twist, self.cmd_vel_callback)
self.steering_L_pub = rospy.Publisher("/xacro/left_steering_wheel_position_controller/command", Float64, queue_size=10)
self.steering_R_pub = rospy.Publisher("/xacro/right_steering_wheel_position_controller/command", Float64, queue_size=10)
self.str_L = Float64()
self.str_R = Float64()
self.drive_L = Float64()
self.drive_R = Float64()
self.Vx = 0.0
self.Wz = 0.0
self.max_alp = pi/2.0
## Car paramters
self.wheel_radius = 0.2 # meter
self.chassis_length = 4
self.chassis_width = 1
self.run()
rospy.spin()
我不想手动更改这两个文件的这些参数,而是想通过在 ROS 中以某种方式链接这些文件来自动执行此操作。我知道我可以在 python 中使用一个简单的文件打开和提取操作,但是在 ROS 中是否有更好的方法,比如使用 set_params?如果是,您如何从 xacro 文件中获取参数。