agv-iit-kgp / freezing-batman Goto Github PK
View Code? Open in Web Editor NEWAGV
License: GNU General Public License v3.0
AGV
License: GNU General Public License v3.0
We have thought of a fast backup planner to be used in case our current planner turns out to be too slow. That planner will work by generating a lot of seeds and choosing one of them by evaluating a cost function for each of them. @narayanaditya95 and @dragonfly91 should write about it in more details.
We have a pretty clean code to generate and train the grass removal from image. The training data is saved in file Samples.model
. When we run the sample generator again, the Samples.model
file is replaced by a new file. Modify the code to append new training data to existing model file.
We can automate the calibration of LIDAR and camera data. Calibration should include:
Print a checkerboard on a flex sheet of know dimensions. The flex sheet will should have markers to place obstacles(cones) at fixed positions. Then write a code to do the automated calibration.
We need to give names to topics. This has to be done offline by you and discussed once in a meeting.
Need to convert all variables to MKS.
Whenever everyone clones, they will have same .gitignore
This bug occurs at least twice in the Clothoid code. I'm unable to find anything about it anywhere online! Consider the following method in our code:
Clothoid::drawPath(...) {
State a;
a.x = ...
a.y = ...
State center;
center.x = ...
center.y = ...
# at this point, both the vars a and center have
# meaningful data in them
double r = center.distance(a);
# when this method is called, inside it, the value
# of a.x, a.y are zero (for no reason -> BUG)
# thus, the output, r is coming out as wrong.
This kind of bug is also visible in another place - getControls. The args to this function are getting zeroed out. I'm working on workarounds for these bugs, and would push as soon as I get the code working.
Please check them and find a solution!
We need to create navigator nodes which will publish targets for strategy planner to chose from. We will need four navigator nodes.
You can use the Voronoi-based DT algorithm that I developed for my BTP. The details are in my report (refer to mail: https://groups.google.com/d/msg/autonomous-ground-vehicle/kL7j10EH1AM/QuPlwEVx9ccJ)
@abinashmeher999 or @yvshri can take this up once either of them is free.
Currently the debug code in planner, lane etc are in main loop. This causes performance overloads and results in slow down of the respective modules. Rather, the data to be displayed should be published by the nodes via diagnostic messages which are picked up by separate debugger nodes (one for each module) which would then display the data.
node name: imu
publisher topics: imu/yaw``(float)
, ima/pitch``(float)
,imu/roll``(float)
Currently we are using only one model file Samples.model
for machine learning based grass removal. Allow the creation of multiple model files in sample generator. Pass the name of the model file as flag. Then add another option in laneDetectorNode
to choose the model file passed as a flag. The default model file shall be Samples.model
Try out hector slam module of ros.
Following the nomenclature and node structure given here: https://github.com/AGV-IIT-KGP/freezing-batman/wiki/Node-and-Topic-Nomenclature, we ought to convert the current structure as it is a bit arbitrary and difficult to understand at first sight.
Please edit / suggest edits to the wiki as you see fit.
Personnel Involved
logitech_camera: @rohansur DONE
gps_ins: @krishna95 @arnaghosh
sparkfun_imu: @krishna95 @arnaghosh
hokuyo_node: DONE
lane_detector: @arnaghosh @krishna95 DONE
obstacle_detector: @shivamvats DONE
data_fuser: @krishna95
waypoint_selector: @abinashmeher999
waypoint_navigator: @abinashmeher999
lane_navigator: @shivamvats
nose_navigator: udai
dummy_navigator: @rohansur
strategy_planner: @abinashmeher999 DONE
local_planner: @yvshri DONE
controller:
The includes need to follow a clean structure. Use Google's style: http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Names_and_Order_of_Includes#Names_and_Order_of_Includes
See if the Logitech camera's FPS can be increased by decreasing its image resolution via its GUI on Windows.
Currently we can adjust the parameters of the Obstacle removal code by the help of track bar. But to use them we have to manually change the values in the code. Write these values to a file while adjusting them from the trackbar in debug mode and load them while running the code normally.
Create a ROS pkg which can support JAUS++ lib functions. Include a sample test file.
Read the IGVC doc, read the specifications and write the code for JAUS challenge.
Currently we have to run each module individually to run the bot. That's pretty cumbersome. Create a launch file for that task.
Currently we don't have any localization or Mapping modules that greatly restricts the abilities of our planning module. Implementing SLAM(simultaneous Localization and Mapping) will help us implement D* algorithm, plus it will give our bot better ability to maneuver difficult situations in IGVC arena.
module.launch
. Include these launch files in eklavya3_sensors.launch
under eklavya3
application.logitech_camera
, hokuyo_node
, vn_ins
, sparkfun_ahrs
)We have a position_from_target
package in environment/interpretation
. It takes That package takes the current gps position of the bot, the gps position of the target and gives the target pose. The package is dependent on MRTP library for the conversion of GPS points to 3D points in space. I feel is it worth the effort to remove the MRPT dependency. See the code of the conversion in MRPT from here https://github.com/jlblancoc/mrpt/blob/master/libs/topography/src/conversions.cpp and port it to our package. The conversion code is pretty straight forward.
eklavya_launchers
launch filesinversePerspectiveTransform.cpp
in terms of map_size
instead of hard coding themlane_detector
pkg to color_based_lane_detector
. Rename this one to lane_detector
TODO List:
Create launch files for each module. Move all parameters to the launch file and fetch them during run time using rosparam. Follow this link: http://wiki.ros.org/roscpp_tutorials/Tutorials/Parameters to understand what code to add to fetch params during run time. This link: http://wiki.ros.org/roslaunch/XML/param gives a simple example of how to include the parameters in the launch file. Finally, this link: http://wiki.ros.org/Parameter%20Server gives an idea of what all types of parameters you can give via rosparam.
During IGVC, we need the ability to switch the target selection strategy. Currently, we have two strategies:
Replace the usage of global variables with function parameters.
Shift to opencv's C++ interface.
Code rework required in planning/motion_planning/local_planner/src/Clothoid.cpp.
Some TODOs:
The if-else block inside the if block of the outermost if-else block has redundant code: it always adds a PI to theta. Please check and fix the bug.
@shivamvats
You don't need to write new code. We already have a color filter based lane detector code which we used last year. The code is present in laneDetector
package. Take it from there and fit it in our current laneDetectorTest
package. Add a flag maybe -b
to allow us to use it. You will have to make a few changes in the code. The old code is in IPLImage
format convert it into cv::Mat
. This work shouldn't take much time. Do it by tomorrow afternoon, that will be 3PM 11th May 2014.
We have a lot of sensors and have a lot of corresponding sensors modules. That includes
They might have pretty different usability options and different input and output interface. We need to document them for easier use in future.
The document can be of form
Hokuyo LIDAR
============
Description of Sensor
------------------
Usage:
`rosrun <package_name> <executable> <option>`
Description of Options
---------------------------
Publisher Data Type
-------------------------
Other Relevant Information
--------------------------------
Planner crashes with a glibc error after a few seconds under DT mode. The normal mode is working fine (ran okay for 10 minutes).
Try using gdb to track down the memory corruption. Also sanity-check the mapping methods - make sure you are not putting the start / goal very close to some obstacle. Since it works w/o DT but not with DT, the error may be caused by the extra code. But, this is not necessarily the case.
@satyapr see if you can help.
Also, @yvshri and I would be working on refactoring the local_planner and get it deploy-ready in the meanwhile.
Start using NetBeans IDE. Use these steps to create a NetBeans project from an existing CMakeLists.txt of a ROS package: http://wiki.ros.org/IDEs#NetBeans
The following input to the Trajectory class gives bizarre paths.
pose: (287.446466, 129.647887, 0.176044)
target: (500, 521.333333, 1.570000)
Please investigate this further.
We'll have to standardize the node & corresponding topic names.
https://github.com/AGV-IIT-KGP/freezing-batman/wiki/Node-and-Topic-Nomenclature
@hargup please assign people to all the open issues. Also correct some of the issue assignees. Most of them are assigned to a @abinashmeher999
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.