修改自定义消息

This commit is contained in:
Robofish 2025-04-09 02:39:03 +08:00
parent ac4c6c2816
commit 040a6d8040
11 changed files with 198 additions and 0 deletions

2
build.sh Normal file
View File

@ -0,0 +1,2 @@
source install/setup.bash
colcon build

0
run.sh Normal file
View File

View File

@ -15,6 +15,10 @@ add_executable(ps2_reader src/ps2_reader.cpp)
ament_target_dependencies(ps2_reader rclcpp rc_msgs) # rc_msgs ament_target_dependencies(ps2_reader rclcpp rc_msgs) # rc_msgs
install(DIRECTORY launch
DESTINATION share/${PROJECT_NAME}/
)
install(TARGETS install(TARGETS
ps2_reader ps2_reader
DESTINATION lib/${PROJECT_NAME}) DESTINATION lib/${PROJECT_NAME})

View File

@ -0,0 +1,15 @@
from launch import LaunchDescription
from launch_ros.actions import Node
def generate_launch_description():
return LaunchDescription([
Node(
package='ps2_controller',
executable='ps2_reader',
name='ps2_controller_node',
output='screen',
parameters=[
{'device': '/dev/input/js0'} # 可根据需要修改设备路径
]
)
])

View File

@ -7,6 +7,9 @@ rosidl_generate_interfaces(${PROJECT_NAME}
"msg/DataControl.msg" "msg/DataControl.msg"
"msg/DataMotor.msg" "msg/DataMotor.msg"
"msg/DataLeg.msg" "msg/DataLeg.msg"
"msg/DataMotors.msg"
"msg/MotorCmd.msg"
"msg/MotorCmds.msg"
) )
ament_package() ament_package()

View File

@ -0,0 +1,3 @@
DataMotor data_motor_0
DataMotor data_motor_1
DataMotor data_motor_2

View File

@ -0,0 +1,5 @@
float32 tau
float32 vw
float32 pos
float32 kp
float32 kd

View File

@ -0,0 +1,3 @@
MotorCmd motor_cmd_0
MotorCmd motor_cmd_1
MotorCmd motor_cmd_2

View File

@ -0,0 +1,27 @@
cmake_minimum_required(VERSION 3.8)
project(robot_bringup)
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic)
endif()
# find dependencies
find_package(ament_cmake REQUIRED)
install(DIRECTORY launch
DESTINATION share/${PROJECT_NAME}/
)
if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
# the following line skips the linter which checks for copyrights
# comment the line when a copyright and license is added to all source files
set(ament_cmake_copyright_FOUND TRUE)
# the following line skips cpplint (only works in a git repo)
# comment the line when this package is in a git repo and when
# a copyright and license is added to all source files
set(ament_cmake_cpplint_FOUND TRUE)
ament_lint_auto_find_test_dependencies()
endif()
ament_package()

View File

@ -0,0 +1,116 @@
from launch import LaunchDescription
from launch_ros.actions import Node
from launch_ros.actions import ComposableNodeContainer
from launch_ros.descriptions import ComposableNode
def generate_launch_description():
# 定义 leg_ctrl 的四个容器节点
lf_container = ComposableNodeContainer(
name='lf_motor_container',
namespace='',
package='rclcpp_components',
executable='component_container',
composable_node_descriptions=[
ComposableNode(
package='unitree_motor_serial_driver',
plugin='unitree_motor_serial_driver::MotorControlNode',
name='unitree_motor_serial_driver_lf',
parameters=[{'serial_port': '/dev/ttyACM0'}],
remappings=[
('data_leg_control', 'LF/data_leg_control'),
('data_leg_motor', 'LF/data_leg_motor')
]
)
],
output='screen',
)
rf_container = ComposableNodeContainer(
name='rf_motor_container',
namespace='',
package='rclcpp_components',
executable='component_container',
composable_node_descriptions=[
ComposableNode(
package='unitree_motor_serial_driver',
plugin='unitree_motor_serial_driver::MotorControlNode',
name='unitree_motor_serial_driver_rf',
parameters=[{'serial_port': '/dev/ttyACM1'}],
remappings=[
('data_leg_control', 'RF/data_leg_control'),
('data_leg_motor', 'RF/data_leg_motor')
]
)
],
output='screen',
)
lr_container = ComposableNodeContainer(
name='lr_motor_container',
namespace='',
package='rclcpp_components',
executable='component_container',
composable_node_descriptions=[
ComposableNode(
package='unitree_motor_serial_driver',
plugin='unitree_motor_serial_driver::MotorControlNode',
name='unitree_motor_serial_driver_lr',
parameters=[{'serial_port': '/dev/ttyACM2'}],
remappings=[
('data_leg_control', 'LR/data_leg_control'),
('data_leg_motor', 'LR/data_leg_motor')
]
)
],
output='screen',
)
rr_container = ComposableNodeContainer(
name='rr_motor_container',
namespace='',
package='rclcpp_components',
executable='component_container',
composable_node_descriptions=[
ComposableNode(
package='unitree_motor_serial_driver',
plugin='unitree_motor_serial_driver::MotorControlNode',
name='unitree_motor_serial_driver_rr',
parameters=[{'serial_port': '/dev/ttyACM3'}],
remappings=[
('data_leg_control', 'RR/data_leg_control'),
('data_leg_motor', 'RR/data_leg_motor')
]
)
],
output='screen',
)
# 定义 ahrs_driver 节点
ahrs_driver = Node(
package="fdilink_ahrs",
executable="ahrs_driver_node",
parameters=[{
'if_debug_': False,
'serial_port_': '/dev/ttyUSB0',
'serial_baud_': 921600,
'imu_topic': '/imu',
'imu_frame_id_': 'gyro_link',
'mag_pose_2d_topic': '/mag_pose_2d',
'Magnetic_topic': '/magnetic',
'Euler_angles_topic': '/euler_angles',
'gps_topic': '/gps/fix',
'twist_topic': '/system_speed',
'NED_odom_topic': '/NED_odometry',
'device_type_': 1
}],
output="screen"
)
# 返回主启动文件的描述
return LaunchDescription([
lf_container,
rf_container,
lr_container,
rr_container,
ahrs_driver
])

View File

@ -0,0 +1,20 @@
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>robot_bringup</name>
<version>0.0.0</version>
<description>TODO: Package description</description>
<maintainer email="1683502971@qq.com">robofish</maintainer>
<license>TODO: License declaration</license>
<buildtool_depend>ament_cmake</buildtool_depend>
<depend>launch</depend>
<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>
<export>
<build_type>ament_cmake</build_type>
</export>
</package>