Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changes to support virtual reality #1

Open
wants to merge 33 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
74ddaee
Adding docking and undocking servers (need to be tested)
jacobe90 Jun 21, 2022
8b34c9d
Added a server for getting the ids of world objects with fiducials (n…
jacobe90 Jun 22, 2022
0d4fd87
Added a server for getting the pose of a specific fiducial, given its ID
jacobe90 Jun 22, 2022
c24eed6
Small bugfix with dock and undock servers
jacobe90 Jun 24, 2022
1119057
user/pw
jacobe90 Jul 7, 2022
0884bc6
initial commit
jacobe90 Jul 7, 2022
c176768
added body pose action server
jacobe90 Jul 8, 2022
8ca3f77
made body pose actionserver require poses to be in odom instead of body
jacobe90 Jul 8, 2022
95432ba
debugged spot body pose mode
jacobe90 Jul 8, 2022
63e9eb0
Combined spot arm and spot body into one urdf
jacobe90 Jul 11, 2022
abdb6f8
Missing imports, syntax errors fixed
jacobe90 Jul 12, 2022
7a37c83
cleaned up some sussy stuff in the hand pose
jacobe90 Jul 12, 2022
474b164
merged the arm and body urdfs in a better way
jacobe90 Jul 12, 2022
42662ca
Finished incorporating arm mesh with spot
jacobe90 Jul 13, 2022
6ff01b1
Finished incorporating arm mesh with spot, fixed joint state publishers
jacobe90 Jul 13, 2022
6fd1d02
Got rid of all remnants of testing arm model
jacobe90 Jul 13, 2022
f1179cf
debugged tagged object loader
jacobe90 Jul 13, 2022
18743b4
Wack change to get fiducial stuff working, amend this in the future f…
jacobe90 Jul 14, 2022
b85115f
Started testing spot manipulation
jacobe90 Jul 14, 2022
06fd064
Added support for wrist_tform_tool to hand_pose service
jacobe90 Jul 15, 2022
bd8b017
merging with master
jacobe90 Jul 28, 2022
c7753fa
merging with master
jacobe90 Jul 28, 2022
827f873
Merge branch 'master' into manipulation-dev
jacobe90 Jul 28, 2022
7ad5727
Merge pull request #1 from jacobe90/manipulation-dev
jacobe90 Jul 28, 2022
c4b6a5e
Added a publisher for ManipulatorState
jacobe90 Aug 1, 2022
f164449
Let spot sdk take care of default wrist_tform_tool
jacobe90 Aug 8, 2022
ca92b36
Added LocalizationState publishing, gripper action server
jacobe90 Aug 11, 2022
d5d0856
Debugged hand posing backend, refactored gripper server to block unti…
jacobe90 Aug 15, 2022
943b00c
Added graph nav upload service
jacobe90 Aug 15, 2022
3474d1e
Debugged the localization state publisher
jacobe90 Aug 15, 2022
2a2de80
added status to GraphNavActionFeedback
jacobe90 Aug 18, 2022
1263170
Debugged arm!
jacobe90 Aug 25, 2022
4953d61
Final refactoring
jacobe90 Aug 25, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/inspectionProfiles/profiles_settings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
# Added ROS Driver for Arm

Services added to control joints of the arm and the gripper.
https://github.com/estherRay/spot_ros/blob/master/spot_arm.mp4

# URDF and MoveIt simulation of Spot's arm

Available in other repo: https://github.com/estherRay/Spot-Arm


# Spot ROS Driver

![CP Spot](cp_spot.jpg)
Expand Down
Binary file added Spot-Arm/ArmDescription.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Spot-Arm/ArmMoveIt.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
17 changes: 17 additions & 0 deletions Spot-Arm/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
This repository was developed and tested on Ubuntu 18.04 with ROS Melodic.


spot_arm_description:

Hardware description of spot arm (stl, urdf, ...)
![alt text](https://github.com/estherRay/Spot-Arm/blob/main/ArmDescription.png)


spot_moveit_config:

Moveit controller for motion planning

Control of the arm using Rviz

Gazebo simulation
![alt text](https://github.com/estherRay/Spot-Arm/blob/main/ArmMoveIt.png)
202 changes: 202 additions & 0 deletions Spot-Arm/spot_arm_description/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@
cmake_minimum_required(VERSION 3.0.2)
project(spot_arm_description)

## Compile as C++11, supported in ROS Kinetic and newer
# add_compile_options(-std=c++11)

## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
find_package(catkin REQUIRED)

## System dependencies are found with CMake's conventions
# find_package(Boost REQUIRED COMPONENTS system)


## Uncomment this if the package has a setup.py. This macro ensures
## modules and global scripts declared therein get installed
## See http://ros.org/doc/api/catkin/html/user_guide/setup_dot_py.html
# catkin_python_setup()

################################################
## Declare ROS messages, services and actions ##
################################################

## To declare and build messages, services or actions from within this
## package, follow these steps:
## * Let MSG_DEP_SET be the set of packages whose message types you use in
## your messages/services/actions (e.g. std_msgs, actionlib_msgs, ...).
## * In the file package.xml:
## * add a build_depend tag for "message_generation"
## * add a build_depend and a exec_depend tag for each package in MSG_DEP_SET
## * If MSG_DEP_SET isn't empty the following dependency has been pulled in
## but can be declared for certainty nonetheless:
## * add a exec_depend tag for "message_runtime"
## * In this file (CMakeLists.txt):
## * add "message_generation" and every package in MSG_DEP_SET to
## find_package(catkin REQUIRED COMPONENTS ...)
## * add "message_runtime" and every package in MSG_DEP_SET to
## catkin_package(CATKIN_DEPENDS ...)
## * uncomment the add_*_files sections below as needed
## and list every .msg/.srv/.action file to be processed
## * uncomment the generate_messages entry below
## * add every package in MSG_DEP_SET to generate_messages(DEPENDENCIES ...)

## Generate messages in the 'msg' folder
# add_message_files(
# FILES
# Message1.msg
# Message2.msg
# )

## Generate services in the 'srv' folder
# add_service_files(
# FILES
# Service1.srv
# Service2.srv
# )

## Generate actions in the 'action' folder
# add_action_files(
# FILES
# Action1.action
# Action2.action
# )

## Generate added messages and services with any dependencies listed here
# generate_messages(
# DEPENDENCIES
# std_msgs # Or other packages containing msgs
# )

################################################
## Declare ROS dynamic reconfigure parameters ##
################################################

## To declare and build dynamic reconfigure parameters within this
## package, follow these steps:
## * In the file package.xml:
## * add a build_depend and a exec_depend tag for "dynamic_reconfigure"
## * In this file (CMakeLists.txt):
## * add "dynamic_reconfigure" to
## find_package(catkin REQUIRED COMPONENTS ...)
## * uncomment the "generate_dynamic_reconfigure_options" section below
## and list every .cfg file to be processed

## Generate dynamic reconfigure parameters in the 'cfg' folder
# generate_dynamic_reconfigure_options(
# cfg/DynReconf1.cfg
# cfg/DynReconf2.cfg
# )

###################################
## catkin specific configuration ##
###################################
## The catkin_package macro generates cmake config files for your package
## Declare things to be passed to dependent projects
## INCLUDE_DIRS: uncomment this if your package contains header files
## LIBRARIES: libraries you create in this project that dependent projects also need
## CATKIN_DEPENDS: catkin_packages dependent projects also need
## DEPENDS: system dependencies of this project that dependent projects also need
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES spot_arm_description
# CATKIN_DEPENDS other_catkin_pkg
# DEPENDS system_lib
)

###########
## Build ##
###########

## Specify additional locations of header files
## Your package locations should be listed before other locations
include_directories(
# include
# ${catkin_INCLUDE_DIRS}
)

## Declare a C++ library
# add_library(${PROJECT_NAME}
# src/${PROJECT_NAME}/spot_arm_description.cpp
# )

## Add cmake target dependencies of the library
## as an example, code may need to be generated before libraries
## either from message generation or dynamic reconfigure
# add_dependencies(${PROJECT_NAME} ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

## Declare a C++ executable
## With catkin_make all packages are built within a single CMake context
## The recommended prefix ensures that target names across packages don't collide
# add_executable(${PROJECT_NAME}_node src/spot_arm_description_node.cpp)

## Rename C++ executable without prefix
## The above recommended prefix causes long target names, the following renames the
## target back to the shorter version for ease of user use
## e.g. "rosrun someones_pkg node" instead of "rosrun someones_pkg someones_pkg_node"
# set_target_properties(${PROJECT_NAME}_node PROPERTIES OUTPUT_NAME node PREFIX "")

## Add cmake target dependencies of the executable
## same as for the library above
# add_dependencies(${PROJECT_NAME}_node ${${PROJECT_NAME}_EXPORTED_TARGETS} ${catkin_EXPORTED_TARGETS})

## Specify libraries to link a library or executable target against
# target_link_libraries(${PROJECT_NAME}_node
# ${catkin_LIBRARIES}
# )

#############
## Install ##
#############

# all install targets should use catkin DESTINATION variables
# See http://ros.org/doc/api/catkin/html/adv_user_guide/variables.html

## Mark executable scripts (Python etc.) for installation
## in contrast to setup.py, you can choose the destination
# catkin_install_python(PROGRAMS
# scripts/my_python_script
# DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
# )

## Mark executables for installation
## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_executables.html
# install(TARGETS ${PROJECT_NAME}_node
# RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
# )

## Mark libraries for installation
## See http://docs.ros.org/melodic/api/catkin/html/howto/format1/building_libraries.html
# install(TARGETS ${PROJECT_NAME}
# ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
# LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
# RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION}
# )

## Mark cpp header files for installation
# install(DIRECTORY include/${PROJECT_NAME}/
# DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
# FILES_MATCHING PATTERN "*.h"
# PATTERN ".svn" EXCLUDE
# )

## Mark other files for installation (e.g. launch and bag files, etc.)
# install(FILES
# # myfile1
# # myfile2
# DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
# )

#############
## Testing ##
#############

## Add gtest based cpp test target and link libraries
# catkin_add_gtest(${PROJECT_NAME}-test test/test_spot_arm_description.cpp)
# if(TARGET ${PROJECT_NAME}-test)
# target_link_libraries(${PROJECT_NAME}-test ${PROJECT_NAME})
# endif()

## Add folders to be run by python nosetests
# catkin_add_nosetests(test)
9 changes: 9 additions & 0 deletions Spot-Arm/spot_arm_description/launch/controller.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<launch>

<rosparam file="$(find spot_arm_description)/launch/controller.yaml" command="load"/>
<node args="Joint1_position_controller Joint2_position_controller Joint3_position_controller Joint4_position_controller Joint5_position_controller Joint6_position_controller Joint7_position_controller joint_state_controller " name="controller_spawner" ns="spot_arm" output="screen" pkg="controller_manager" respawn="false" type="spawner"
<node name="robot_state_publisher" output="screen" pkg="robot_state_publisher" respawn="false" type="robot_state_publisher">
<remap from="/joint_states" to="/spot_arm/joint_states"/>
</node>

</launch>
35 changes: 35 additions & 0 deletions Spot-Arm/spot_arm_description/launch/controller.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
spot_arm_controller:
# Publish all joint states -----------------------------------
joint_state_controller:
type: joint_state_controller/JointStateController
publish_rate: 50

# Position Controllers --------------------------------------
Joint1_position_controller:
type: effort_controllers/JointPositionController
joint: Joint1
pid: {p: 100.0, i: 0.01, d: 10.0}
Joint2_position_controller:
type: effort_controllers/JointPositionController
joint: Joint2
pid: {p: 100.0, i: 0.01, d: 10.0}
Joint3_position_controller:
type: effort_controllers/JointPositionController
joint: Joint3
pid: {p: 100.0, i: 0.01, d: 10.0}
Joint4_position_controller:
type: effort_controllers/JointPositionController
joint: Joint4
pid: {p: 100.0, i: 0.01, d: 10.0}
Joint5_position_controller:
type: effort_controllers/JointPositionController
joint: Joint5
pid: {p: 100.0, i: 0.01, d: 10.0}
Joint6_position_controller:
type: effort_controllers/JointPositionController
joint: Rev6
pid: {p: 100.0, i: 0.01, d: 10.0}
Joint7_position_controller:
type: effort_controllers/JointPositionController
joint: Rev7
pid: {p: 100.0, i: 0.01, d: 10.0}
10 changes: 10 additions & 0 deletions Spot-Arm/spot_arm_description/launch/display.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<launch>
<arg default="$(find spot_arm_description)/urdf/spot_arm.xacro" name="model"/>
<arg default="true" name="gui"/>
<arg default="$(find spot_arm_description)/launch/urdf.rviz" name="rvizconfig"/>
<param command="$(find xacro)/xacro $(arg model)" name="robot_description"/>
<param name="use_gui" value="$(arg gui)"/>
<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher"/>
<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"/>
<node args="-d $(arg rvizconfig)" name="rviz" pkg="rviz" required="true" type="rviz"/>
</launch>
11 changes: 11 additions & 0 deletions Spot-Arm/spot_arm_description/launch/gazebo.launch
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<launch>
<param command="$(find xacro)/xacro $(find spot_arm_description)/urdf/spot_arm.xacro" name="robot_description"/>
<node args="-param robot_description -urdf -model spot_arm" name="spawn_urdf" pkg="gazebo_ros" type="spawn_model"/>
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<arg name="paused" value="true"/>
<arg name="use_sim_time" value="true"/>
<arg name="gui" value="true"/>
<arg name="headless" value="false"/>
<arg name="debug" value="false"/>
</include>
</launch>
Loading