| @@ -0,0 +1 @@ | |||||
| *~ | |||||
| @@ -0,0 +1,37 @@ | |||||
| cmake_minimum_required(VERSION 3.8) | |||||
| project(hexapod_robot) | |||||
| 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) | |||||
| # uncomment the following section in order to fill in | |||||
| # further dependencies manually. | |||||
| # find_package(<dependency> REQUIRED) | |||||
| install( | |||||
| DIRECTORY description/urdf | |||||
| DESTINATION share/hexapod_robot | |||||
| ) | |||||
| install( | |||||
| DIRECTORY bringup/launch bringup/config | |||||
| DESTINATION share/hexapod_robot | |||||
| ) | |||||
| 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() | |||||
| @@ -0,0 +1,17 @@ | |||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | |||||
| of this software and associated documentation files (the "Software"), to deal | |||||
| in the Software without restriction, including without limitation the rights | |||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||||
| copies of the Software, and to permit persons to whom the Software is | |||||
| furnished to do so, subject to the following conditions: | |||||
| The above copyright notice and this permission notice shall be included in | |||||
| all copies or substantial portions of the Software. | |||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | |||||
| THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |||||
| THE SOFTWARE. | |||||
| @@ -0,0 +1,327 @@ | |||||
| Panels: | |||||
| - Class: rviz_common/Displays | |||||
| Help Height: 70 | |||||
| Name: Displays | |||||
| Property Tree Widget: | |||||
| Expanded: | |||||
| - /TF1 | |||||
| Splitter Ratio: 0.5 | |||||
| Tree Height: 438 | |||||
| - Class: rviz_common/Views | |||||
| Expanded: | |||||
| - /Current View1 | |||||
| Name: Views | |||||
| Splitter Ratio: 0.5 | |||||
| Visualization Manager: | |||||
| Class: "" | |||||
| Displays: | |||||
| - Alpha: 0.5 | |||||
| Cell Size: 1 | |||||
| Class: rviz_default_plugins/Grid | |||||
| Color: 160; 160; 164 | |||||
| Enabled: true | |||||
| Line Style: | |||||
| Line Width: 0.029999999329447746 | |||||
| Value: Lines | |||||
| Name: Grid | |||||
| Normal Cell Count: 0 | |||||
| Offset: | |||||
| X: 0 | |||||
| Y: 0 | |||||
| Z: 0 | |||||
| Plane: XY | |||||
| Plane Cell Count: 10 | |||||
| Reference Frame: <Fixed Frame> | |||||
| Value: true | |||||
| - Alpha: 0.800000011920929 | |||||
| Class: rviz_default_plugins/RobotModel | |||||
| Collision Enabled: false | |||||
| Description File: "" | |||||
| Description Source: Topic | |||||
| Description Topic: | |||||
| Depth: 5 | |||||
| Durability Policy: Volatile | |||||
| History Policy: Keep Last | |||||
| Reliability Policy: Reliable | |||||
| Value: /robot_description | |||||
| Enabled: true | |||||
| Links: | |||||
| All Links Enabled: true | |||||
| Expand Joint Details: false | |||||
| Expand Link Details: false | |||||
| Expand Tree: false | |||||
| Link Tree Style: Links in Alphabetic Order | |||||
| base_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| c1_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| c2_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| c3_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| c4_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| c5_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| c6_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| e1_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| e2_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| e3_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| e4_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| e5_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| e6_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| f1_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| f2_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| f3_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| f4_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| f5_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| f6_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| t1_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| t2_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| t3_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| t4_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| t5_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| t6_link: | |||||
| Alpha: 1 | |||||
| Show Axes: false | |||||
| Show Trail: false | |||||
| Value: true | |||||
| Mass Properties: | |||||
| Inertia: false | |||||
| Mass: false | |||||
| Name: RobotModel | |||||
| TF Prefix: "" | |||||
| Update Interval: 0 | |||||
| Value: true | |||||
| Visual Enabled: true | |||||
| - Class: rviz_default_plugins/TF | |||||
| Enabled: true | |||||
| Frame Timeout: 15 | |||||
| Frames: | |||||
| All Enabled: true | |||||
| base_link: | |||||
| Value: true | |||||
| c1_link: | |||||
| Value: true | |||||
| c2_link: | |||||
| Value: true | |||||
| c3_link: | |||||
| Value: true | |||||
| c4_link: | |||||
| Value: true | |||||
| c5_link: | |||||
| Value: true | |||||
| c6_link: | |||||
| Value: true | |||||
| e1_link: | |||||
| Value: true | |||||
| e2_link: | |||||
| Value: true | |||||
| e3_link: | |||||
| Value: true | |||||
| e4_link: | |||||
| Value: true | |||||
| e5_link: | |||||
| Value: true | |||||
| e6_link: | |||||
| Value: true | |||||
| f1_link: | |||||
| Value: true | |||||
| f2_link: | |||||
| Value: true | |||||
| f3_link: | |||||
| Value: true | |||||
| f4_link: | |||||
| Value: true | |||||
| f5_link: | |||||
| Value: true | |||||
| f6_link: | |||||
| Value: true | |||||
| t1_link: | |||||
| Value: true | |||||
| t2_link: | |||||
| Value: true | |||||
| t3_link: | |||||
| Value: true | |||||
| t4_link: | |||||
| Value: true | |||||
| t5_link: | |||||
| Value: true | |||||
| t6_link: | |||||
| Value: true | |||||
| Marker Scale: 0.30000001192092896 | |||||
| Name: TF | |||||
| Show Arrows: true | |||||
| Show Axes: true | |||||
| Show Names: false | |||||
| Tree: | |||||
| base_link: | |||||
| c1_link: | |||||
| f1_link: | |||||
| t1_link: | |||||
| e1_link: | |||||
| {} | |||||
| c2_link: | |||||
| f2_link: | |||||
| t2_link: | |||||
| e2_link: | |||||
| {} | |||||
| c3_link: | |||||
| f3_link: | |||||
| t3_link: | |||||
| e3_link: | |||||
| {} | |||||
| c4_link: | |||||
| f4_link: | |||||
| t4_link: | |||||
| e4_link: | |||||
| {} | |||||
| c5_link: | |||||
| f5_link: | |||||
| t5_link: | |||||
| e5_link: | |||||
| {} | |||||
| c6_link: | |||||
| f6_link: | |||||
| t6_link: | |||||
| e6_link: | |||||
| {} | |||||
| Update Interval: 0 | |||||
| Value: true | |||||
| Enabled: true | |||||
| Global Options: | |||||
| Background Color: 48; 48; 48 | |||||
| Fixed Frame: base_link | |||||
| Frame Rate: 30 | |||||
| Name: root | |||||
| Tools: | |||||
| - Class: rviz_default_plugins/MoveCamera | |||||
| Transformation: | |||||
| Current: | |||||
| Class: rviz_default_plugins/TF | |||||
| Value: true | |||||
| Views: | |||||
| Current: | |||||
| Class: rviz_default_plugins/Orbit | |||||
| Distance: 0.8691349625587463 | |||||
| Enable Stereo Rendering: | |||||
| Stereo Eye Separation: 0.05999999865889549 | |||||
| Stereo Focal Distance: 1 | |||||
| Swap Stereo Eyes: false | |||||
| Value: false | |||||
| Focal Point: | |||||
| X: 0 | |||||
| Y: 0 | |||||
| Z: 0 | |||||
| Focal Shape Fixed Size: true | |||||
| Focal Shape Size: 0.05000000074505806 | |||||
| Invert Z Axis: false | |||||
| Name: Current View | |||||
| Near Clip Distance: 0.009999999776482582 | |||||
| Pitch: 0.559999942779541 | |||||
| Target Frame: <Fixed Frame> | |||||
| Value: Orbit (rviz) | |||||
| Yaw: 4.6249775886535645 | |||||
| Saved: ~ | |||||
| Window Geometry: | |||||
| Displays: | |||||
| collapsed: false | |||||
| Height: 666 | |||||
| Hide Left Dock: false | |||||
| Hide Right Dock: false | |||||
| QMainWindow State: 000000ff00000000fd0000000100000000000001560000023cfc0200000002fb000000100044006900730070006c006100790073010000003f0000023c000000cc00fffffffb0000000a0056006900650077007300000001d2000000a9000000a900ffffff000001ff0000023c00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 | |||||
| Views: | |||||
| collapsed: false | |||||
| Width: 859 | |||||
| X: 0 | |||||
| Y: 32 | |||||
| @@ -0,0 +1,52 @@ | |||||
| from launch import LaunchDescription | |||||
| from launch.substitutions import Command, FindExecutable, LaunchConfiguration, PathJoinSubstitution | |||||
| from launch_ros.actions import Node | |||||
| from launch_ros.substitutions import FindPackageShare | |||||
| def generate_launch_description(): | |||||
| robot_description_content = Command([ | |||||
| PathJoinSubstitution([FindExecutable(name="xacro")]), | |||||
| " ", | |||||
| PathJoinSubstitution( | |||||
| [ | |||||
| FindPackageShare("hexapod_robot"), | |||||
| "urdf", | |||||
| "hexapod_robot.urdf.xacro" | |||||
| ] | |||||
| ) | |||||
| ] | |||||
| ) | |||||
| robot_description = {"robot_description": robot_description_content} | |||||
| rviz_node = Node( | |||||
| package="rviz2", | |||||
| executable="rviz2", | |||||
| arguments=['-d', PathJoinSubstitution([FindPackageShare("hexapod_robot"), "config", "hexapod_robot.rviz"])], | |||||
| name="rviz2", | |||||
| output="screen", | |||||
| ) | |||||
| robot_state_publisher_node = Node( | |||||
| package="robot_state_publisher", | |||||
| executable="robot_state_publisher", | |||||
| parameters=[{ | |||||
| 'robot_description': robot_description_content | |||||
| }] | |||||
| ) | |||||
| joint_state_publisher_gui = Node( | |||||
| package="joint_state_publisher_gui", | |||||
| executable="joint_state_publisher_gui" | |||||
| ) | |||||
| nodes = [ | |||||
| rviz_node, | |||||
| robot_state_publisher_node, | |||||
| joint_state_publisher_gui | |||||
| ] | |||||
| return LaunchDescription(nodes) | |||||
| @@ -0,0 +1,27 @@ | |||||
| <?xml version="1.0"?> | |||||
| <robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="hexapod_robot"> | |||||
| <xacro:include filename="$(find hexapod_robot)/urdf/hexapod_robot_materials.xacro"/> | |||||
| <xacro:include filename="$(find hexapod_robot)/urdf/hexapod_robot_macros.xacro"/> | |||||
| <link name="base_link"> | |||||
| <xacro:create_frame_plate z_offset="-0.034"/> | |||||
| <xacro:create_frame_plate z_offset=" 0.034"/> | |||||
| <xacro:create_coxa_joint_mount xy_offset="-0.040 0.080"/> | |||||
| <xacro:create_coxa_joint_mount xy_offset="-0.060 0.000"/> | |||||
| <xacro:create_coxa_joint_mount xy_offset="-0.040 -0.080"/> | |||||
| <xacro:create_coxa_joint_mount xy_offset=" 0.040 -0.080"/> | |||||
| <xacro:create_coxa_joint_mount xy_offset=" 0.060 0.000"/> | |||||
| <xacro:create_coxa_joint_mount xy_offset=" 0.040 0.080"/> | |||||
| </link> | |||||
| <xacro:create_leg number="1" side="l" xy_offset="-0.040 0.080"/> | |||||
| <xacro:create_leg number="2" side="l" xy_offset="-0.060 0.000"/> | |||||
| <xacro:create_leg number="3" side="l" xy_offset="-0.040 -0.080"/> | |||||
| <xacro:create_leg number="4" side="r" xy_offset=" 0.040 -0.080"/> | |||||
| <xacro:create_leg number="5" side="r" xy_offset=" 0.060 0.000"/> | |||||
| <xacro:create_leg number="6" side="r" xy_offset=" 0.040 0.080"/> | |||||
| </robot> | |||||
| @@ -0,0 +1,176 @@ | |||||
| <?xml version="1.0"?> | |||||
| <robot xmlns:xacro="http://www.ros.org/wiki/xacro" name="hexapod_robot"> | |||||
| <xacro:macro name="create_frame_plate" params="z_offset"> | |||||
| <visual> | |||||
| <origin xyz="0 0 ${z_offset}"/> | |||||
| <geometry> | |||||
| <box size="0.100 0.180 0.003"/> | |||||
| </geometry> | |||||
| <material name="black"/> | |||||
| </visual> | |||||
| </xacro:macro> | |||||
| <xacro:macro name="create_coxa_joint_mount" params="xy_offset"> | |||||
| <visual> | |||||
| <origin xyz="${xy_offset} -0.0325"/> | |||||
| <geometry> | |||||
| <cylinder radius="0.0125" length="0.006"/> | |||||
| </geometry> | |||||
| <material name="black"/> | |||||
| </visual> | |||||
| <visual> | |||||
| <origin xyz="${xy_offset} 0.0325"/> | |||||
| <geometry> | |||||
| <cylinder radius="0.0125" length="0.006"/> | |||||
| </geometry> | |||||
| <material name="black"/> | |||||
| </visual> | |||||
| </xacro:macro> | |||||
| <xacro:macro name="create_coxa" params="name side xy_offset"> | |||||
| <link name="${name}_link"> | |||||
| <!-- coxa bounding box --> | |||||
| <visual> | |||||
| <geometry> | |||||
| <box size="0.045 0.045 0.045"/> | |||||
| </geometry> | |||||
| <xacro:if value="${side == 'l'}"><origin xyz="-0.015 -0.005 0"/></xacro:if> | |||||
| <xacro:if value="${side == 'r'}"><origin xyz=" 0.015 -0.005 0"/></xacro:if> | |||||
| <material name="blue"/> | |||||
| </visual> | |||||
| <!-- coxa rotation axis --> | |||||
| <visual> | |||||
| <geometry> | |||||
| <cylinder radius="0.005" length="0.065"/> | |||||
| </geometry> | |||||
| <material name="blue"/> | |||||
| </visual> | |||||
| <!-- femur rotation axis --> | |||||
| <visual> | |||||
| <xacro:if value="${side == 'l'}"><origin xyz="-0.020 0 -0.0075" rpy="-1.57 0 0"/></xacro:if> | |||||
| <xacro:if value="${side == 'r'}"><origin xyz=" 0.020 0 -0.0075" rpy="-1.57 0 0"/></xacro:if> | |||||
| <geometry> | |||||
| <cylinder radius="0.005" length="0.065"/> | |||||
| </geometry> | |||||
| <material name="blue"/> | |||||
| </visual> | |||||
| </link> | |||||
| <joint name="${name}_joint" type="continuous"> | |||||
| <parent link="base_link"/> | |||||
| <child link="${name}_link"/> | |||||
| <origin xyz="${xy_offset} 0"/> | |||||
| <axis xyz="0 0 1"/> | |||||
| </joint> | |||||
| </xacro:macro> | |||||
| <xacro:macro name="create_femur" params="name parent_name side"> | |||||
| <link name="${name}_link"> | |||||
| <visual> | |||||
| <xacro:if value="${side == 'l'}"><origin xyz="-0.040 0 0"/></xacro:if> | |||||
| <xacro:if value="${side == 'r'}"><origin xyz=" 0.040 0 0"/></xacro:if> | |||||
| <geometry> | |||||
| <box size="0.100 0.003 0.010"/> | |||||
| </geometry> | |||||
| <material name="green"/> | |||||
| </visual> | |||||
| <!-- | |||||
| <visual> | |||||
| <xacro:if value="${side == 'l'}"><origin xyz="-0.040 -0.003 0" rpy="-1.57 0 0"/></xacro:if> | |||||
| <xacro:if value="${side == 'r'}"><origin xyz=" 0.040 -0.003 0" rpy="-1.57 0 0"/></xacro:if> | |||||
| <geometry> | |||||
| <cylinder radius="0.0125" length="0.006"/> | |||||
| </geometry> | |||||
| <material name="green"/> | |||||
| </visual> | |||||
| --> | |||||
| </link> | |||||
| <joint name="${name}_joint" type="continuous"> | |||||
| <parent link="${parent_name}_link"/> | |||||
| <child link="${name}_link"/> | |||||
| <xacro:if value="${side == 'l'}"><origin xyz="-0.020 0.03 -0.0075"/></xacro:if> | |||||
| <xacro:if value="${side == 'r'}"><origin xyz=" 0.020 0.03 -0.0075"/></xacro:if> | |||||
| <axis xyz="0 1 0"/> | |||||
| </joint> | |||||
| </xacro:macro> | |||||
| <xacro:macro name="create_tibia" params="name parent_name side"> | |||||
| <link name="${name}_link"> | |||||
| <!-- servo box --> | |||||
| <visual> | |||||
| <origin xyz="0 -0.005 0.010"/> | |||||
| <geometry> | |||||
| <box size="0.020 0.035 0.040"/> | |||||
| </geometry> | |||||
| <material name="red"/> | |||||
| </visual> | |||||
| <!-- tibia top --> | |||||
| <visual> | |||||
| <xacro:if value="${side == 'l'}"><origin xyz="-0.005 0 0.0025"/></xacro:if> | |||||
| <xacro:if value="${side == 'r'}"><origin xyz=" 0.005 0 0.0025"/></xacro:if> | |||||
| <geometry> | |||||
| <box size="0.040 0.003 0.075"/> | |||||
| </geometry> | |||||
| <material name="red"/> | |||||
| </visual> | |||||
| <!-- tibia middle --> | |||||
| <visual> | |||||
| <xacro:if value="${side == 'l'}"><origin xyz="-0.005 0 -0.055"/></xacro:if> | |||||
| <xacro:if value="${side == 'r'}"><origin xyz=" 0.005 0 -0.055"/></xacro:if> | |||||
| <origin xyz="0 0 -0.055"/> | |||||
| <geometry> | |||||
| <box size="0.030 0.003 0.050"/> | |||||
| </geometry> | |||||
| <material name="red"/> | |||||
| </visual> | |||||
| <!-- tibia bottom --> | |||||
| <visual> | |||||
| <origin xyz=" 0.0 0 -0.105"/> | |||||
| <origin xyz="0 0 -0.105"/> | |||||
| <geometry> | |||||
| <box size="0.010 0.003 0.050"/> | |||||
| </geometry> | |||||
| <material name="red"/> | |||||
| </visual> | |||||
| <!-- tibia rotation axis --> | |||||
| <visual> | |||||
| <origin xyz="0 0 0" rpy="-1.57 0 0"/> | |||||
| <geometry> | |||||
| <cylinder radius="0.005" length="0.065"/> | |||||
| </geometry> | |||||
| <material name="red"/> | |||||
| </visual> | |||||
| </link> | |||||
| <joint name="${name}_joint" type="continuous"> | |||||
| <parent link="${parent_name}_link"/> | |||||
| <child link="${name}_link"/> | |||||
| <xacro:if value="${side == 'l'}"><origin xyz="-0.080 -0.03 0"/></xacro:if> | |||||
| <xacro:if value="${side == 'r'}"><origin xyz=" 0.080 -0.03 0"/></xacro:if> | |||||
| <axis xyz="0 1 0"/> | |||||
| </joint> | |||||
| </xacro:macro> | |||||
| <xacro:macro name="create_end" params="name side parent_name"> | |||||
| <link name="${name}_link"> | |||||
| <visual> | |||||
| <geometry> | |||||
| <sphere radius="0.004"/> | |||||
| </geometry> | |||||
| <material name="cyan"/> | |||||
| </visual> | |||||
| </link> | |||||
| <joint name="${name}_joint" type="fixed"> | |||||
| <parent link="${parent_name}_link"/> | |||||
| <child link="${name}_link"/> | |||||
| <origin xyz="0 0 -0.130"/> | |||||
| </joint> | |||||
| </xacro:macro> | |||||
| <xacro:macro name="create_leg" params="number side xy_offset"> | |||||
| <xacro:create_coxa name="c${number}" side="${side}" xy_offset="${xy_offset}"/> | |||||
| <xacro:create_femur name="f${number}" side="${side}" parent_name="c${number}"/> | |||||
| <xacro:create_tibia name="t${number}" side="${side}" parent_name="f${number}"/> | |||||
| <xacro:create_end name="e${number}" side="${side}" parent_name="t${number}"/> | |||||
| </xacro:macro> | |||||
| </robot> | |||||
| @@ -0,0 +1,25 @@ | |||||
| <?xml version="1.0"?> | |||||
| <robot xmlns:xacro="http://www.ros.org/wiki/xacro"> | |||||
| <material name="black"> | |||||
| <color rgba="0 0 0 1"/> | |||||
| </material> | |||||
| <material name="blue"> | |||||
| <color rgba="0 0 1 1"/> | |||||
| </material> | |||||
| <material name="green"> | |||||
| <color rgba="0 1 0 1"/> | |||||
| </material> | |||||
| <material name="red"> | |||||
| <color rgba="1 0 0 1"/> | |||||
| </material> | |||||
| <material name="cyan"> | |||||
| <color rgba="1 0 1 1"/> | |||||
| </material> | |||||
| </robot> | |||||
| @@ -0,0 +1,18 @@ | |||||
| <?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>hexapod_robot</name> | |||||
| <version>0.0.0</version> | |||||
| <description>TODO: Package description</description> | |||||
| <maintainer email="marcus@grieger.xyz">wuselfuzz</maintainer> | |||||
| <license>MIT</license> | |||||
| <buildtool_depend>ament_cmake</buildtool_depend> | |||||
| <test_depend>ament_lint_auto</test_depend> | |||||
| <test_depend>ament_lint_common</test_depend> | |||||
| <export> | |||||
| <build_type>ament_cmake</build_type> | |||||
| </export> | |||||
| </package> | |||||