启动具有特定 IP 的 ROS 节点
Launch a ROS Node with an specific IP
我一直在使用此命令向启动节点的模拟 Bebop2 发布消息roslaunch bebop_driver bebop_node.launch ip:=10.202.0.1
。我正在尝试编写一个 python 脚本以便使用此 rospy.init_node("bebop_driver" )
执行相同的操作,但我找不到指定 ip 的方法。
这些是我用来运行模拟的命令。
sphinx /opt/parrot-sphinx/usr/share/sphinx/drones/bebop2.drone
roslaunch bebop_driver bebop_node.launch ip:=10.202.0.1
成功模拟无人机后,我使用此命令起飞
rostopic pub --once bebop/takeoff std_msgs/Empty
这是我的bebop_node.launch
<?xml version="1.0"?>
<launch>
<arg name="namespace" default="bebop" />
<arg name="ip" default="10.202.0.1" />
<arg name="drone_type" default="bebop2" /> <!-- available drone types: bebop1, bebop2 -->
<arg name="config_file" default="$(find bebop_driver)/config/defaults.yaml" />
<arg name="camera_info_url" default="package://bebop_driver/data/$(arg drone_type)_camera_calib.yaml" />
<node pkg="bebop_driver" name="bebop_driver" type="bebop_driver_node" output="screen">
<param name="camera_info_url" value="$(arg camera_info_url)" />
<param name="bebop_ip" value="$(arg ip)" />
<rosparam command="load" file="$(arg config_file)" />
</node>
<include file="$(find bebop_description)/launch/description.launch" />
</launch>
这是我正在尝试使用的 python,以便通过向 cmd_vel[ 发布消息来移动无人机=31=]话题。
#!/usr/bin/env python
import roslib;roslib.load_manifest('bebop_driver')
import rospy
from geometry_msgs.msg import Twist
import sys
speed = float(sys.argv[1])
time = float(sys.argv[2])
print ("Adelante")
if speed != "" and speed > 0 :
print ("Velocidad =" , speed , "m/s")
else:
print ("Falta parametro de velocidad o el valor es incorrecto")
if time != "" and time > 0 :
print ("Tiempo = ",time, "s")
else:
print ("Falta parametro de tiempo o el valor es incorrecto")
if time != "" and time > 0 :
print ("Publishing")
pub = rospy.Publisher('cmd_vel', Twist, queue_size=10)
rospy.init_node("bebop_commander" )
twist = Twist()
twist.linear.x = speed; twist.linear.y = 0; twist.linear.z = 0;
twist.angular.x = 0; twist.angular.y = 0; twist.angular.z = 0;
pub.publish(twist)
rospy.spin()
通过将 ip:=10.202.0.1
添加到您的命令中,您可以设置启动文件参数。检查调用的启动文件显示
<param name="bebop_ip" value="$(arg ip)" />
表示参数用于设置参数bebop_ip
。这也可以在 python 中实现,例如:
rospy.set_param('bebop_ip', '10.202.0.1')
您可以在 ROS wiki. Note that setting parameters also can be done in C++ or by command-line 找到文档。
更新:
由于您正在尝试命令 运行 驱动程序,因此您应该更改 commander 的名称,因为不可能有两个节点同名:
rospy.init_node("bebop_commander")
您还需要将驱动程序名称添加到参数和主题中,例如
rospy.set_param('/bebop_driver/bebop_ip', '10.202.0.1')
和
pub = rospy.Publisher('/bebop_driver/cmd_vel', Twist, queue_size=10)
正确寻址 运行 驱动程序。
我一直在使用此命令向启动节点的模拟 Bebop2 发布消息roslaunch bebop_driver bebop_node.launch ip:=10.202.0.1
。我正在尝试编写一个 python 脚本以便使用此 rospy.init_node("bebop_driver" )
执行相同的操作,但我找不到指定 ip 的方法。
这些是我用来运行模拟的命令。
sphinx /opt/parrot-sphinx/usr/share/sphinx/drones/bebop2.drone
roslaunch bebop_driver bebop_node.launch ip:=10.202.0.1
成功模拟无人机后,我使用此命令起飞
rostopic pub --once bebop/takeoff std_msgs/Empty
这是我的bebop_node.launch
<?xml version="1.0"?>
<launch>
<arg name="namespace" default="bebop" />
<arg name="ip" default="10.202.0.1" />
<arg name="drone_type" default="bebop2" /> <!-- available drone types: bebop1, bebop2 -->
<arg name="config_file" default="$(find bebop_driver)/config/defaults.yaml" />
<arg name="camera_info_url" default="package://bebop_driver/data/$(arg drone_type)_camera_calib.yaml" />
<node pkg="bebop_driver" name="bebop_driver" type="bebop_driver_node" output="screen">
<param name="camera_info_url" value="$(arg camera_info_url)" />
<param name="bebop_ip" value="$(arg ip)" />
<rosparam command="load" file="$(arg config_file)" />
</node>
<include file="$(find bebop_description)/launch/description.launch" />
</launch>
这是我正在尝试使用的 python,以便通过向 cmd_vel[ 发布消息来移动无人机=31=]话题。
#!/usr/bin/env python
import roslib;roslib.load_manifest('bebop_driver')
import rospy
from geometry_msgs.msg import Twist
import sys
speed = float(sys.argv[1])
time = float(sys.argv[2])
print ("Adelante")
if speed != "" and speed > 0 :
print ("Velocidad =" , speed , "m/s")
else:
print ("Falta parametro de velocidad o el valor es incorrecto")
if time != "" and time > 0 :
print ("Tiempo = ",time, "s")
else:
print ("Falta parametro de tiempo o el valor es incorrecto")
if time != "" and time > 0 :
print ("Publishing")
pub = rospy.Publisher('cmd_vel', Twist, queue_size=10)
rospy.init_node("bebop_commander" )
twist = Twist()
twist.linear.x = speed; twist.linear.y = 0; twist.linear.z = 0;
twist.angular.x = 0; twist.angular.y = 0; twist.angular.z = 0;
pub.publish(twist)
rospy.spin()
通过将 ip:=10.202.0.1
添加到您的命令中,您可以设置启动文件参数。检查调用的启动文件显示
<param name="bebop_ip" value="$(arg ip)" />
表示参数用于设置参数bebop_ip
。这也可以在 python 中实现,例如:
rospy.set_param('bebop_ip', '10.202.0.1')
您可以在 ROS wiki. Note that setting parameters also can be done in C++ or by command-line 找到文档。
更新:
由于您正在尝试命令 运行 驱动程序,因此您应该更改 commander 的名称,因为不可能有两个节点同名:
rospy.init_node("bebop_commander")
您还需要将驱动程序名称添加到参数和主题中,例如
rospy.set_param('/bebop_driver/bebop_ip', '10.202.0.1')
和
pub = rospy.Publisher('/bebop_driver/cmd_vel', Twist, queue_size=10)
正确寻址 运行 驱动程序。