um-arm-lab / conq_python Goto Github PK
View Code? Open in Web Editor NEWPython library and example scripts for Conq, our Boston Dynamics Spot
License: MIT License
Python library and example scripts for Conq, our Boston Dynamics Spot
License: MIT License
navigateTo
functionBDAII has been actively developing a ROS2 driver for Spot for a while now. When first investigating this in early 2023, the driver wasn't in a state that we could use. Now that the lab has begun the switch to ROS2 and the driver is far more developed, we should heavily consider using this.
Arthur Lovekin, a previous student who worked extensively with Conq, laid a lot of groundwork for interactively navigating a pre-recorded map. This work is located in the clickmap_updates branch and should be merged into master.
This can be a rabbit hole, but it's worth thinking about what development standards and tools should be enforced when developing with other people. I talked with Peter about this and we're of the opinion that formatting is probably the only standard that should be considered.
pre-commit
tool for auto-formatting on commits (uses pre-commit hooks)We've developed some basic functionality for grasping/manipulating an object given a detection from the perception pipeline. The folk(s) working on the manipulation stack should become familiar with how this is done.
Modify the map in real-time with object and waypoint locations to enable smarter navigation:
As of right now, we don't have a simulator for the Spot robot. Even if we did, generating photorealistic images can be a difficult task. Due to this, it would be great if we could prototype and test development with recorded logs, especially development concerning perception and navigation, e.g. detecting objects and localizing those objects in the map.
We should scope out how difficult this would be and determine if the amount of work is worth it.
Logging over WiFi is slow. It's about 1 FPS if you log all information from all cameras. The data logger class in the repo takes the robot state object and images as protobuf messages and pickles them in a background thread.
If we want higher frequency logging there are some workarounds:
Explore pre-trained models for 6-DOF grasps
We/Boston Dynamics have already written functionality to record a map offline and navigate with that pre-recorded map online. The folk(s) working on navigation should become familiar with the stack and understand the capabilities/limits of the current stack.
It will be helpful to be able to visualize the map during log replay so that we can visualize detections, localization state, localized objects, etc. Get this to a point where visualization of an offline-recorded GraphNav
map is fairly streamlined.
With a map uploaded, have the robot navigate along all waypoints in a loop. This will be used later for patrolling for and adding world objects to the map.
Currently, the control logic for the tool retrieval demo is hard coded with conditionals. This should be replaced with a somewhat general approach using a state machine/behavior tree. However, we don't want to reinvent the wheel here. We should use a state machine or behavior tree library that makes this much simpler for us. This GitHub page that lists some libraries might be a good first place to look.
After running the map recording, closing loops, I get this error when selecting the option to optimize anchors:
E0214 11:12:03.750103680 32274 hpack_parser.cc:999] Error parsing 'content-type' metadata: invalid value
Unclassified exception: <_MultiThreadedRendezvous of RPC that terminated with:
status = StatusCode.UNKNOWN
details = "Stream removed"
debug_error_string = "UNKNOWN:Error received from peer {created_time:"2024-02-14T11:12:03.750339124-05:00", grpc_status:2, grpc_message:"Stream removed"}"
When an object is detected, add as a world object
We use Slack in the lab and will almost certainly be continuing that. However, I need to figure out if we're going to be using the old Agrobots Slack channel or creating a new one.
Now that we've added localization state to the data recorder (#18), we'll probably want to be able to visualize/use the map in replay. However, the map is currently stored in a separate location than the log files. This can be difficult if wanting to share a full log with someone.
We should consider doing the following when recording a log while Conq is using a GraphNav
map:
metadata.json
metadata.json
Right now, ConqDataRecorder
logs the time that the data recorder started recording all images in a recorded packet. For robust replay, it'd be best if we had a per-image timestamp. However, it's yet to be seen if this is an issue. Consider changing the single timestamp to per-image timestamps.
When creating the log playback functionality, I didn't realize that multiple episodes corresponded to the same run/continuous running of Conq. To visualize the whole experiment, I need to allow for loading/playback of multiple episode pickle files.
ConqLog
class.Running the tool retrieval demo from last semester is a good way to get familiar with the project. We should run the demo and dive into how each component works, discuss pros/cons of approaches, and brainstorm next steps for the manipulation, perception, and navigation components.
We've already whipped up some perception capability for the tool retrieval demo. This uses Roboflow for data annotation and maybe (?) training the model, I forget. The folk(s) working on perception this semester should familiarize themselves with the code and processes we have for this so far.
GraphNav
.Create a dataset of garden tools images using src/regrasping_demo/get_detections.py
<< get_color_img
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.